package com.du.task02;

import java.util.*;

public class LandlordSort {
    public static void main(String[] args) {
        List<String> li=new ArrayList<>();
        li.add("桃");
        li.add("心");
        li.add("梅");
        li.add("方");
        List<String> li1=new ArrayList<>();
        li1.add("2");
        li1.add("A");
        li1.add("K");
        li1.add("Q");
        li1.add("J");
        for(int i=10;i>2;i--){
            li1.add(Integer.valueOf(i).toString());
        }
        Map<Integer,String> map=new HashMap<>();
        map.put(0,"大王");   //最先放入大小王
        map.put(1,"小王");
        int sum=0;
        for(int i =0;i<li1.size();i++){
            for(int j=0;j<li.size();j++){
                map.put(2+sum,li.get(j).concat(li1.get(i)));  //按照2到3的顺序将牌放入map集合中
                sum++;
            }
        }
        System.out.println(map);    //打印map集合
        Set<Integer> set = map.keySet();   //将map集合中的所有key取出放入Set集合中
        List<Integer> list=new ArrayList<>();   //定义一个list集合接收set集合里面的Key值
        List<String > list1=new ArrayList<>();
        list.addAll(set);  //将set集合中的值放入准备好的list集合中
        Collections.shuffle(list);  //调用方法shuffle将list集合中的key值打乱
        for(Integer i:list) {
            list1.add(map.get(i));  //遍历list集合中的key值转换为对应的value放入list1集合中
        }
        System.out.println(list1); //打印list1集合，即打乱了的卡牌
        List<Integer> play1=new ArrayList<>();
        List<Integer> play2=new ArrayList<>();
        List<Integer> play3=new ArrayList<>();
        List<Integer> play4=new ArrayList<>();
        List<String> p1=new ArrayList<>();
        List<String> p2=new ArrayList<>();
        List<String> p3=new ArrayList<>();
        List<String> p4=new ArrayList<>();
        for(int i=53;i>=0;i--){         //通过list集合中的key值来发牌，使每个玩家手中的牌都是对应的数字key值
            if(i<3){
                play4.add(list.get(i));
            }else if(i%3==0){
                play1.add(list.get(i));
            }else if(i%3==1){
                play2.add(list.get(i));
            }else if(i%3==2){
                play3.add(list.get(i));
            }
        }
        Collections.sort(play1);   //通过玩家手中牌的key值（也就是数字），进行从大到小的排序
        Collections.sort(play2);
        Collections.sort(play3);
        Collections.sort(play4);

        for(Integer i:play1) {     //最后通过遍历将每个玩家手中的key值转换为对应的value，也就是对应的牌
            p1.add(map.get(i));
        }
        for(Integer i:play2) {
            p2.add(map.get(i));
        }
        for(Integer i:play3) {
            p3.add(map.get(i));
        }
        for(Integer i:play4) {
            p4.add(map.get(i));
        }

        System.out.println(p1);   //最后打印每个玩家手中的牌，因为玩家手中牌的key值已经经过了排序，所以现在手上的牌就是按顺序排放的。
        System.out.println(p2);
        System.out.println(p3);
        System.out.println(p4);
    }
}
